package com.bolt.report.business.modules.dataset.dto;

import com.bolt.convention.data.BaseDTO;
import com.bolt.report.business.modules.datasource.dto.ReportDataSourceDTO;
import com.bolt.report.business.modules.field.dto.ReportDbFieldDTO;
import com.bolt.report.business.modules.param.dto.ReportDbParamDTO;
import com.bolt.report.definition.ApiMethod;
import com.bolt.report.definition.RequestType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import java.util.Set;

@Data
public class ReportDataSetDTO extends BaseDTO {
    /**
     * * id
     **/
    private String id;


    /**
     * * 数据集编码
     **/
    @ApiModelProperty(notes = "数据集编码")
    private String dbCode;


    /**
     * * 数据集名字
     **/
    @ApiModelProperty(notes = "数据集名字")
    private String dbChName;


    /**
     * * 数据源类型
     **/
    @ApiModelProperty(notes = "数据源类型")
    private Integer dbType;


    /**
     * * 数据库表名
     **/
    @ApiModelProperty(notes = "数据库表名")
    private String dbTableName;


    /**
     * * 动态查询SQL
     **/
    @ApiModelProperty(notes = "动态查询SQL")
    private String dbDynSql;


    /**
     * * 数据源KEY
     **/
    @ApiModelProperty(notes = "数据源KEY")
    private String dbKey;


    /**
     * * 填报数据源
     **/
    @ApiModelProperty(notes = "填报数据源")
    private String tbDbKey;


    /**
     * * 填报数据表
     **/
    @ApiModelProperty(notes = "填报数据表")
    private String tbDbTableName;




    /**
     * * java类数据源  数值（bean key/java类名）
     **/
    @ApiModelProperty(notes = "Spring类数据源ID")
    private String springKey;


    /**
     * * 是否是列表0否1是 默认0
     **/
    @ApiModelProperty(notes = "是否是列表0否1是 默认0")
    private boolean isList;


    /**
     * * 是否作为分页,0:不分页，1:分页
     **/
    @ApiModelProperty(notes = "是否作为分页,0:不分页，1:分页")
    private boolean isPage;


    /**
     * * 数据源
     **/
    @ApiModelProperty(notes = "数据源")
    private String dbSourceId;


    /**
     * * json数据，直接解析json内容
     **/
    @ApiModelProperty(notes = "json数据，直接解析json内容")
    private String jsonData;


    /**
     * * api转换器
     **/
    @ApiModelProperty(notes = "api转换器")
    private String apiConvert;

    /**
     * 请求地址
     */
    @ApiModelProperty(notes = "请求地址")
    private String apiUrl;
    /**
     * 请求方式
     */
    @ApiModelProperty(notes = "请求方式")
    private ApiMethod apiMethod;
    /**
     * 传参方式
     */
    @ApiModelProperty(notes = "传参方式")
    private RequestType apiRequestType;

    private ReportDataSourceDTO reportDataSource;
    /**
     * 字段信息
     */
    @NotEmpty
    private Set<ReportDbFieldDTO> fields;

    /**
     * 参数信息
     */
    private Set<ReportDbParamDTO> params;

}